/**
 *  
 */
package br.gov.sjc.socialalimenta;
  
import br.org.sjc.validacao.Sair;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Editable;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;


/**
 * @author rodrigo.ramos
 *
 */
public class EscolaridadeActivity extends Sair {
	private static String TAG = "EscolaridadeActivity";
	//Declara base de dados
	public static SQLiteDatabase BancoDados = null;
	public static String nomeBanco = "SocialAlimenta";
	public void openDB(){
		try{
			BancoDados = openOrCreateDatabase(nomeBanco,MODE_WORLD_READABLE,null);
			Log.v("EscolaridadeActivity", "BancoDados.openOrCreateDatabase();");
		}catch (Exception E){
			Log.e("EscolaridadeActivity", "Erro em BancoDados.close();"+E.getMessage());
		} 
	}
	public void closeDB(){
		BancoDados.close();
		Log.v("EscolaridadeActivity", "BancoDados.close();");
	}

	//Declara TextBox
	EditText tbECurso,tbESerie;

	//Declara CheckBox
	CheckBox cbEConcluido, cbESalaEsp;

	// Declara os Spinners
	Spinner spEscolaridade, spESerie;

	//Declara base de dados
	//SQLiteDatabase BancoDados = SocialAlimenta2Activity.BancoDados ;

	//Pega o numero do Sias em uso atual
	NumeroSias ns = new NumeroSias();
	int NumSias = ns.getNumeroDaFamilia();
	int idMembro = ns.getNumeroDoMembroDaFamilia();
	int ID;

	//Declara Cursor
	Cursor cVerifica;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.escolaridade2);
		registerBaseActivityReceiver();
		openDB();

		cbEConcluido = (CheckBox)findViewById(R.escolaridade.cbEConcluido);
		cbESalaEsp = (CheckBox)findViewById(R.escolaridade.cbESalaEsp);
		tbECurso = (EditText)findViewById(R.escolaridade.tbECurso);
		//tbESerie = (EditText)findViewById(R.escolaridade.tbESerie);

		/*****************************
		 * Configuração dos Spinners
		 * *************************** */

		spEscolaridade = (Spinner) findViewById(R.escolaridade.spEscolaridade);
		ArrayAdapter<CharSequence> adpEscolaridade = ArrayAdapter.createFromResource(
				this, R.array.Escolaridade,
				android.R.layout.simple_spinner_item);
		adpEscolaridade.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spEscolaridade.setAdapter(adpEscolaridade);

		spESerie = (Spinner) findViewById(R.escolaridade.spSerie);
		ArrayAdapter<CharSequence> adpESerie = ArrayAdapter.createFromResource(
				this, R.array.Serie,
				android.R.layout.simple_spinner_item);
		adpESerie.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spESerie.setAdapter(adpESerie);

		/*****************************
		 * Fim da Configuração dos Spinners
		 * *************************** */

		// Declara Buttons
		Button btnEVoltar, btnEIr;

		/** Inicia o set de dados caso haja dados */
		if (verificaRegistro(NumSias)){
			setarDados(ID);
			Log.v("EscolaridadeActivity", "onCreate() Com dados do SiasN: "+NumSias+"ID: "+ID);
		}else{
			//Num tem seNão
			Log.v("EscolaridadeActivity", "onCreate() Com dados vazios ");
		}

		/** Acao do botao Voltar */
		btnEVoltar = (Button) findViewById(R.escolaridade.btnVoltar);
		btnEVoltar.setOnClickListener(new View.OnClickListener() {

			public void onClick(View arg0) {
				/** InitComponents */
				Intent ittEVoltar = new Intent(getApplicationContext(), DadosPessoaisActivity.class);
				closeDB();
				startActivity(ittEVoltar);
			}
		});//fim acao do botao voltar

		/** Acao do botao Prox */
		btnEIr = (Button) findViewById(R.escolaridade.btnIr);
		btnEIr.setOnClickListener(new View.OnClickListener() {

			public void onClick(View arg0) {
				String concluido, especial;
				if (cbEConcluido.isChecked()){
					concluido = "Sim";
				}else{
					concluido = "Não";
				}
				if (cbESalaEsp.isChecked()){
					especial = "Sim";
				}else{
					especial = "Não";
				}
				if (validaCampos()){
					if (verificaRegistro(NumSias)){
						alteraRegistro(ID);
					}else{
						salvaDados(NumSias,idMembro,spEscolaridade.getSelectedItem().toString(),tbECurso.getText().toString(),spESerie.getSelectedItem().toString(),concluido,especial);
					}/** InitComponents */
					Intent ittEIr = new Intent(getApplicationContext(), DocumentosActivity.class);
					closeDB();
					startActivity(ittEIr);
				}
			}
		});//fim acao do botao Px
	}


	public void salvaDados(int string, int string2, String string3, String string4, String string5, String string6, String string7){
		try{
			String SQL = "INSERT INTO tab_SocialA_Escolaridade(SiasN, idMembro, Ensino, EnsCurso, EnsSerie, EnsConcluido, EnsEsp ) VALUES ("+string+", "+string2+",'"+string3+"', '"+string4+"','"+string5+"', '"+string6+"','"+string7+"')";
			BancoDados.execSQL(SQL);
			Log.i("EscolaridadeActivity", "salvaDados() TRUE ");
			Toast.makeText(this, "Gravando Dados da Família:"+NumSias+"/"+idMembro, Toast.LENGTH_LONG).show();
		}catch(Exception erro) {
			mensagemAlerta("Erro","Ocorreu um erro Inesperado " );
			Log.e("EscolaridadeActivity", "salvaDados() ERRO "+ erro.getMessage());
		}
	}

	public boolean verificaRegistro(int NumeroSias){
		boolean Retorno = false;
		try{
			String SQLQuery = "Select * from tab_SocialA_Escolaridade WHERE SiasN="+NumeroSias+" AND idMembro="+idMembro;
			cVerifica = BancoDados.rawQuery(SQLQuery, null);
			if (cVerifica.getCount() !=0 ){
				cVerifica.moveToFirst();
				ID = cVerifica.getInt(cVerifica.getColumnIndex("_id"));
				Retorno = true;
				Log.i("EscolaridadeActivity", "verificaRegistro() TRUE ");
			}
		}catch (Exception Err){
			//mensagemAlerta("Erro","Erro Encontrado:"+Err.getMessage());
			Log.e("EscolaridadeActivity", "verificaRegistro() "+Err.getMessage());
		}
		return Retorno;

	}

	public void setarDados(int Posicao){
		try {
			String SQL2 = "SELECT * FROM tab_SocialA_Escolaridade WHERE _id="+Posicao+" ";
			Log.v("EscolaridadeActivity", "setarDados() Posição: "+Posicao);
			Cursor c = BancoDados.rawQuery(SQL2, null);
			c.moveToFirst();

			do {
				tbECurso.setText(c.getString(c.getColumnIndex("EnsCurso")));
				//tbESerie.setText(c.getString(c.getColumnIndex("EnsSerie")));
				String EnsConcluido =  c.getString(c.getColumnIndex("EnsConcluido"));
				if (EnsConcluido.equals("Sim")){
					cbEConcluido.setChecked(true);
				}else{
					cbEConcluido.setChecked(false);
				}
				String EnsEsp =  c.getString(c.getColumnIndex("EnsEsp"));
				if (EnsEsp.equals("Sim")){
					cbESalaEsp.setChecked(true);
				}else{
					cbESalaEsp.setChecked(false);
				}
				ArrayAdapter<CharSequence> adpEnsino = ArrayAdapter.createFromResource(
						this, R.array.Escolaridade,
						android.R.layout.simple_spinner_item);
				adpEnsino.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
				int iEnsino = adpEnsino.getPosition(c.getString(c.getColumnIndex("Ensino")));
				spEscolaridade.setSelection(iEnsino);

				ArrayAdapter<CharSequence> adpESerie = ArrayAdapter.createFromResource(
						this, R.array.Serie,
						android.R.layout.simple_spinner_item);
				adpESerie.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
				int iESerie = adpESerie.getPosition(c.getString(c.getColumnIndex("EnsSerie")));
				spESerie.setSelection(iESerie);

			}while(c.moveToNext());

			Log.v("EscolaridadeActivity", "setarDados() TRUE ");
		}catch (Exception E){
			mensagemAlerta("Erro","Ocorreu um erro inesperado");
			Log.e("EscolaridadeActivity", "Erro em setarDados() "+E.getMessage());
		}
	}


	public void alteraRegistro(int id){
		String concluido, especial;
		if (cbEConcluido.isChecked()){
			concluido = "Sim";
		}else{
			concluido = "Não";
		}
		if (cbESalaEsp.isChecked()){
			especial = "Sim";
		}else{
			especial = "Não";
		}
		try{
			String uSQL = "UPDATE tab_SocialA_Escolaridade SET " +
					" EnsCurso='"+tbECurso.getText().toString()+"'," +
					" EnsSerie='"+spESerie.getSelectedItem().toString()+"'," +
					" Ensino='"+spEscolaridade.getSelectedItem().toString()+"'," +
					" EnsConcluido='"+concluido+"'," +
					" EnsEsp='"+especial+"'" +
					" WHERE _id="+id+" ";
			BancoDados.execSQL(uSQL);
			Toast.makeText(EscolaridadeActivity.this, "Alterado", Toast.LENGTH_LONG).show();
			Log.v("EscolaridadeActivity", "alteraRegistro() realizado com sucesso ");
		}catch(Exception Err){
			mensagemAlerta("Erro","Ocorreu um erro inesperado");
			Log.e("EscolaridadeActivity", "alteraRegistro() erro: "+Err.getMessage());

		}

	}

	public boolean validaCampos(){ 
		boolean retorno = false;
		int erro = 0;
		if (!spEscolaridade.getSelectedItem().toString().equals("Nenhum")){
			if (spEscolaridade.getSelectedItem().toString().equals("Creche")){
				if (!spESerie.getSelectedItem().toString().equals("Não se aplica")){
					Log.e(TAG,"validaCampos - é necessário preencher o Série com: Não se aplica");
					Toast.makeText(this, "Verifique o campo Série", Toast.LENGTH_LONG).show();
					erro++;
				}
			}
			if (spEscolaridade.getSelectedItem().toString().equals("Infantil")){
				if (!spESerie.getSelectedItem().toString().equals("Não se aplica")){
					Log.e(TAG,"validaCampos - é necessário preencher o Série com: Não se aplica");
					Toast.makeText(this, "Verifique o campo Série", Toast.LENGTH_LONG).show();
					erro++;
				}
			}
			if (spEscolaridade.getSelectedItem().toString().equals("Técnico")||spEscolaridade.getSelectedItem().toString().equals("Superior")){
				if (tbECurso.getText().toString().equals("")||spESerie.getSelectedItem().toString().equals("Não se aplica")/**/){
					Log.e(TAG,"validaCampos - É necessário preencher o curso");
					Toast.makeText(this, "Verifique os campos Curso e Série", Toast.LENGTH_LONG).show();
					erro++;
				}
			}
			if (spEscolaridade.getSelectedItem().toString().equals("Supletivo")||spEscolaridade.getSelectedItem().toString().equals("Fundamental")||spEscolaridade.getSelectedItem().toString().equals("Médio")){
				if (spESerie.getSelectedItem().toString().equals("Não se aplica")){
					Log.e(TAG,"validaCampos - É necessário escolher serie corresopndente");
					Toast.makeText(this, "Escolha uma série corretamente", Toast.LENGTH_LONG).show();
					erro++;
				}
			}
			if (spEscolaridade.getSelectedItem().toString().equals("Superior")){
				if (spESerie.getSelectedItem().toString().equals("Série Inicial / 1º ano")
					||spESerie.getSelectedItem().toString().equals("7ª Série / 8º ano")
					||spESerie.getSelectedItem().toString().equals("8ª Série / 9º ano")
			){
				Log.e(TAG,"validaCampos - Escolha uma série (1º ano a 6º ano) para Ensino Superior");
				Toast.makeText(this, "Escolha uma série (1º ano a 6º ano) para Ensino Superior", Toast.LENGTH_LONG).show();
				erro++;
			}
		}
			
			if (spEscolaridade.getSelectedItem().toString().equals("Médio")||spEscolaridade.getSelectedItem().toString().equals("Técnico")){
				if (spESerie.getSelectedItem().toString().equals("Série Inicial / 1º ano")
						||spESerie.getSelectedItem().toString().equals("4ª Série / 5º ano (4º ano)")
						||spESerie.getSelectedItem().toString().equals("5ª Série / 6º ano (5º ano)")
						||spESerie.getSelectedItem().toString().equals("6ª Série / 7º ano (6º ano)")
						||spESerie.getSelectedItem().toString().equals("7ª Série / 8º ano")
						||spESerie.getSelectedItem().toString().equals("8ª Série / 9º ano")
						){
					Log.e(TAG,"validaCampos - É necessário escolher serie correspondente");
					Toast.makeText(this, "Escolha uma série (1º ano a 3º ano) para Ensino Técnico e Médio", Toast.LENGTH_LONG).show();
					erro++;
				}
			}
			
		}else{
			Log.i(TAG,"Valida Campos - Escolaridade igual a Nenhum");
		}
		if (erro == 0){
			retorno = true;
			Log.i(TAG, "validaCampos - TRUE");
		}
		return retorno;
	}

	public void mensagemAlerta(String AlertTitle, String MSGAlert){
		AlertDialog.Builder Mensagem = new AlertDialog.Builder(this);
		Mensagem.setTitle(AlertTitle);
		Mensagem.setMessage(MSGAlert);
		Mensagem.setNeutralButton("Ok", null);
		Mensagem.show();
	}
	@Override
	protected void onResume() {
		//quando a Activity main receber o foco novamente abre-se novamente a conexão
		openDB();
		//método responsável pela atualiza da lista de dados na tela
		//adapter.notifyDataSetChanged();
		super.onResume();
	}
	@Override
	protected void onPause() {

		//toda vez que o programa peder o foco fecha-se a conexão com o BD
		closeDB();
		super.onPause();
	}
	@Override
	protected void onDestroy() {
		super.onDestroy();
		unRegisterBaseActivityReceiver();
		finish();
	}
}
